#include "BulletCollision/NarrowPhaseCollision/btManifoldPoint.h"
#ifdef __cplusplus
extern "C" {
#endif
btManifoldPoint* bullet_NewbtManifoldPoint(){
	btManifoldPoint* wrap_out = new btManifoldPoint();
	return wrap_out;
}

btManifoldPoint* bullet_NewbtManifoldPoint1(btVector3* pointA,btVector3* pointB,btVector3* normal,double distance){
	btVector3 const& c_arg_pointA=(btVector3 const&)(*pointA);
	btVector3 const& c_arg_pointB=(btVector3 const&)(*pointB);
	btVector3 const& c_arg_normal=(btVector3 const&)(*normal);
	btScalar c_arg_distance=distance;
	btManifoldPoint* wrap_out = new btManifoldPoint(c_arg_pointA,c_arg_pointB,c_arg_normal,c_arg_distance);
	return wrap_out;
}

double bullet_btManifoldPoint_getAppliedImpulse(btManifoldPoint* c_this){
	btScalar c_out = c_this->getAppliedImpulse();
	double wrap_out = (c_out);
	return wrap_out;
}

double bullet_btManifoldPoint_getDistance(btManifoldPoint* c_this){
	btScalar c_out = c_this->getDistance();
	double wrap_out = (c_out);
	return wrap_out;
}

double bullet_btManifoldPoint_GetFieldOfM_appliedImpulse(btManifoldPoint* c_this){
	return (double)(c_this->m_appliedImpulse);
}

double bullet_btManifoldPoint_GetFieldOfM_appliedImpulseLateral1(btManifoldPoint* c_this){
	return (double)(c_this->m_appliedImpulseLateral1);
}

double bullet_btManifoldPoint_GetFieldOfM_appliedImpulseLateral2(btManifoldPoint* c_this){
	return (double)(c_this->m_appliedImpulseLateral2);
}

double bullet_btManifoldPoint_GetFieldOfM_combinedFriction(btManifoldPoint* c_this){
	return (double)(c_this->m_combinedFriction);
}

double bullet_btManifoldPoint_GetFieldOfM_combinedRestitution(btManifoldPoint* c_this){
	return (double)(c_this->m_combinedRestitution);
}

double bullet_btManifoldPoint_GetFieldOfM_combinedRollingFriction(btManifoldPoint* c_this){
	return (double)(c_this->m_combinedRollingFriction);
}

double bullet_btManifoldPoint_GetFieldOfM_combinedSpinningFriction(btManifoldPoint* c_this){
	return (double)(c_this->m_combinedSpinningFriction);
}

double bullet_btManifoldPoint_GetFieldOfM_contactMotion1(btManifoldPoint* c_this){
	return (double)(c_this->m_contactMotion1);
}

double bullet_btManifoldPoint_GetFieldOfM_contactMotion2(btManifoldPoint* c_this){
	return (double)(c_this->m_contactMotion2);
}

int bullet_btManifoldPoint_GetFieldOfM_contactPointFlags(btManifoldPoint* c_this){
	return (int)(c_this->m_contactPointFlags);
}

double bullet_btManifoldPoint_GetFieldOfM_distance1(btManifoldPoint* c_this){
	return (double)(c_this->m_distance1);
}

double bullet_btManifoldPoint_GetFieldOfM_frictionCFM(btManifoldPoint* c_this){
	return (double)(c_this->m_frictionCFM);
}

int bullet_btManifoldPoint_GetFieldOfM_index0(btManifoldPoint* c_this){
	return (int)(c_this->m_index0);
}

int bullet_btManifoldPoint_GetFieldOfM_index1(btManifoldPoint* c_this){
	return (int)(c_this->m_index1);
}

btVector3* bullet_btManifoldPoint_GetFieldOfM_lateralFrictionDir1(btManifoldPoint* c_this){
	return (btVector3*)(&c_this->m_lateralFrictionDir1);
}

btVector3* bullet_btManifoldPoint_GetFieldOfM_lateralFrictionDir2(btManifoldPoint* c_this){
	return (btVector3*)(&c_this->m_lateralFrictionDir2);
}

int bullet_btManifoldPoint_GetFieldOfM_lifeTime(btManifoldPoint* c_this){
	return (int)(c_this->m_lifeTime);
}

btVector3* bullet_btManifoldPoint_GetFieldOfM_localPointA(btManifoldPoint* c_this){
	return (btVector3*)(&c_this->m_localPointA);
}

btVector3* bullet_btManifoldPoint_GetFieldOfM_localPointB(btManifoldPoint* c_this){
	return (btVector3*)(&c_this->m_localPointB);
}

btVector3* bullet_btManifoldPoint_GetFieldOfM_normalWorldOnB(btManifoldPoint* c_this){
	return (btVector3*)(&c_this->m_normalWorldOnB);
}

int bullet_btManifoldPoint_GetFieldOfM_partId0(btManifoldPoint* c_this){
	return (int)(c_this->m_partId0);
}

int bullet_btManifoldPoint_GetFieldOfM_partId1(btManifoldPoint* c_this){
	return (int)(c_this->m_partId1);
}

btVector3* bullet_btManifoldPoint_GetFieldOfM_positionWorldOnA(btManifoldPoint* c_this){
	return (btVector3*)(&c_this->m_positionWorldOnA);
}

btVector3* bullet_btManifoldPoint_GetFieldOfM_positionWorldOnB(btManifoldPoint* c_this){
	return (btVector3*)(&c_this->m_positionWorldOnB);
}

double bullet_btManifoldPoint_GetFieldOfM_prevRHS(btManifoldPoint* c_this){
	return (double)(c_this->m_prevRHS);
}

void** bullet_btManifoldPoint_GetFieldOfM_userPersistentData(btManifoldPoint* c_this){
	return (void**)(&c_this->m_userPersistentData);
}

int bullet_btManifoldPoint_getLifeTime(btManifoldPoint* c_this){
	int c_out = c_this->getLifeTime();
	int wrap_out = (c_out);
	return wrap_out;
}

btVector3* bullet_btManifoldPoint_getPositionWorldOnA(btManifoldPoint* c_this){
	btVector3 const& c_out = c_this->getPositionWorldOnA();
	btVector3* wrap_out = (btVector3*)(&c_out);
	return wrap_out;
}

btVector3* bullet_btManifoldPoint_getPositionWorldOnB(btManifoldPoint* c_this){
	btVector3 const& c_out = c_this->getPositionWorldOnB();
	btVector3* wrap_out = (btVector3*)(&c_out);
	return wrap_out;
}

void bullet_btManifoldPoint_setDistance(btManifoldPoint* c_this,double dist){
	btScalar c_arg_dist=dist;
	c_this->setDistance(c_arg_dist);
}

btConstraintRow* bullet_NewbtConstraintRow(){
	btConstraintRow* wrap_out = new btConstraintRow();
	return wrap_out;
}

double bullet_btConstraintRow_GetFieldOfM_accumImpulse(btConstraintRow* c_this){
	return (double)(c_this->m_accumImpulse);
}

double bullet_btConstraintRow_GetFieldOfM_jacDiagInv(btConstraintRow* c_this){
	return (double)(c_this->m_jacDiagInv);
}

double bullet_btConstraintRow_GetFieldOfM_lowerLimit(btConstraintRow* c_this){
	return (double)(c_this->m_lowerLimit);
}

double** bullet_btConstraintRow_GetFieldOfM_normal(btConstraintRow* c_this){
	return (double**)(&c_this->m_normal);
}

double bullet_btConstraintRow_GetFieldOfM_rhs(btConstraintRow* c_this){
	return (double)(c_this->m_rhs);
}

double bullet_btConstraintRow_GetFieldOfM_upperLimit(btConstraintRow* c_this){
	return (double)(c_this->m_upperLimit);
}

#ifdef __cplusplus
}
#endif
